﻿using System.Collections.Generic;
using Byond.Frontend.EnsembleBrowserNew.ViewModels;
using System.Linq;
using Utils.Messaging;

namespace Byond.Frontend.EnsembleBrowserNew
{
	class ItemSelectionArbiter
	{
		private readonly Dictionary<string, ItemViewModel> _items = new Dictionary<string, ItemViewModel>();

		public event MessageEventHandler SendMessage;

		public void Register(ItemViewModel item)
		{
			_items[item.FileName] = item;
		}

		public void Select(string fileName)
		{
			// Warum wird ein FileName übergeben? Siehe FolderViewModel: Hier werden Items immer
			// wieder neu erzeugt, deshalb kann es passieren, dass der Sender bereits old ist.

			var item = _items[fileName];
			item.IsSelected = true;

			foreach (var it in _items.Values.Where(it => it != item))
				it.IsSelected = false;

			SendMessage(new BrowserSelectionChangedMessage(item.FileName));
		}

		public void Reset()
		{
			_items.Clear();
			SendMessage(new BrowserSelectionChangedMessage(null));
		}
	}
}
